Hello David, my name is Joseph. I came across your website in search of an expert computer programmer, and I was wandering if you could help me. I am relatively young and already know that I want programming to be my life. You say you are an expert in your profile, so I wish to learn straight from experts. Could you give me a few tips about programming? What is the best field of programming to get into, what languages to learn, and being successful as a programmer.

Thank you, I hope to hear from you soon.

David你好,我叫Joseph。我徘徊于你的网站,想要寻找一个专业的计算机程序员,我不知道你是否能够帮助我。虽然我还年少,但是已经下定决心要为编程奉献我的一生。你在你的个人资料上面说你是一个专家,所以我希望能直接得到专家的指导。你能给我一些关于编程的技巧吗?进入的最佳领域是什么,应该学习什么语言,以及想要成为一个成功的程序员,我应该怎么做。

希望能尽快收到你的来信,非常感谢。

Hello Joseph,

You may not believe it, but you’re already on the right track and way ahead of many other programmers:

Joseph你好,

你可能不相信,但我可以告诉你,你已经在正确的轨道上,并遥遥领先于其他许多程序员:

You have a clear focus that you want to be a programmer.

你的目标明确:你想成为一个程序员。

You are ready to learn what it takes to be a expert.

你准备学习如何成为一个专家。

You take action.

你采取了行动。

You ask for help from more?experienced programmers.

你从我一个有经验的程序员这儿寻求帮助。

If you’re wondering what’s?the best field of programming to get into and languages to learn, I don’t have exact answers for you.

如果你想知道编程的最佳领域是什么以及要学习什么语言,那么我给不了你确切的答案。

As an example, I specialize in building backend applications in Java, but I know quite a few frontend developers who would hate to go to work every day and do what I do. Just like there are successful plastic surgeons,?anaesthesiologist and?paediatrists, there are many different types of successful programmers, too.

举个例子,我的专长是用Java构建后端应用程序,但我认识相当多的一些前端开发人员讨厌每天去上班。就像医生也有成功的整形外科医生,麻醉师和儿科医生,成功的程序员也有许多不同的类型。

You can be a successful frontend or backend developer or specialize in big data or game developement. You can also be successful in C#, Javascript, Java, Android, etc. It doesn’t matter. The only thing that matters is you have to enjoy what you do and success will follow.

你可以成为一个成功的前端或后端开发人员,也可以专注于大数据或游戏的开发。使用C#、Javascript、Java、Android等,你都可以取得成功。什么语言没关系。唯一重要的事情是你必须喜欢你做的事情,然后成功就会追随而来。

Life is too short to do something that you’re not passionate about. If you don’t wake up in the morning feeling excited about programming, it’s not worth doing what you’re doing. Look at Bill Gates, Warren Buffett, Sir Richard Branson or Elon Musk, you’ll find that all of them are passionate about what they do and would probably do the same job even if they had to work for free.

人生苦短,所以不要将时间浪费在你不热爱的东西上面。如果你早晨醒来不觉得编程令人兴奋,那么你现在在做的事情并不值得你投入精力。看看Bill Gates、Warren Buffett、Sir Richard Branson和Elon Musk,你会发现,他们都热爱他们做的事情,而且即使他们不得不做义工的话,可能依然会选择做同样的工作。

If you’re not sure what field of programming you’re most interested in, that’s ok. Most of the people start out that way.

如果你不知道你最感兴趣的编程领域是什么,那也没关系。大多数人一开始都是这样的情况。

Just start with something. Learn javascript, or C#, or Java, etc. I found the best way for me to learn new technology is to apply it in practice. Come up with a project, for example build a basic website for someone in your family or build a mobile app, etc.

随便从什么东西开始。可以学习JavaScript,或C#,或Java等。我发现对我来说,学习新技术的最好办法是在实践中应用它。提出一个项目,例如为你的家人建立一个基本的网站,或创建一个移动app等。

Break that project down to smaller tasks and then?try to figure out the next step that will take you from point A to point B. The smaller the task it is, the better, as it will keep you progressing and the more tasks you complete, the more condfidence you get in your skills with that technology. Anytime you hit a problem, dig deeper, search for a solution on google, stackoverflow, etc.

将这个项目分解成为更小的任务,然后弄清楚从点A到点B要采取的步骤是什么。分解成的任务越小越好,因为它会让你保持前进,并且你完成的任务越多, 对此技术的技能掌握就越有自信。当你碰到难题的时候,一方面要深入挖掘,另一方面也可以在google和stackoverflow搜索解决方案。

After spending some time with a particular programming language or technology you can decide for yourself if you want to stick with it or give a try to something else. There are no bad decisions here. The worst thing to do is not doing anything.

在与某种特定的编程语言相处一段时间之后,你可以选择继续深入,也可以尝试其他的东西。这里是没有错误决定的。最坏的事是没有做任何事情。

If you stick with something long enough, you may end up as a specialist, or if you keep trying out many different technologies, you may feel you’re more like a generalist. There’s nothing wrong with any of these and you can be successful in both cases.

如果你坚持做一件事,做的时间够长,那么你可能最终成为专家,当然如果你不断地尝试许多不同的技术,那么你可能会觉得你更像是一个多面手。这些职业方向都没有错,而且这两种情况下你都可以获得成功。

And last but not least, here’s a few ideas that may help you progress in your career as a programmer (they worked for me and you may want to give them a try, too):

最后但并非最不重要的一点,这里有一些点子可以帮助你作为一个程序员在你的职业生涯中取得进步(它们对我也有效,所以,你可能会想要试一试):

Every Day Strive to Learn Something New

每天都争取学点新的东西

If you improve by 1% every day (1.01 ^ 365), you’ll be 37.8x better in a year’s time.

如果你按每天1%的速度提高(1.01 ^ 365),那么一年后你将比现在优秀36.8倍。

Learn From the Best

Whether it’s another programmer, tester or manager at the company you work at, or authors of books on programming, or programmers who blog about what they do. Those people spent many years mastering their skills and by learning from them you can skip those trials and errors and only apply what worked for them. That will put you on a fast track Try to figure out what they do differently than you and see how you can apply that to yourself. Read the books they wrote, subscribe to their newsletter and even better, read what they read.

向最优秀的人学习

三人行,必有我师焉。这里所谓最优秀的人可以是你工作公司的程序员、测试人员或者经理,可以是编程书籍的作者,也可以是写博客说明他们做了什么的程 序员。这些人用了很多年的时间来掌握他们的技能,通过向他们学习,可以让你避免走弯路和犯错误。这是一条捷径,可以让你通过揣摩他们的不同做法,来找到适 合你自己的做法。阅读他们写的书,订阅他们的时事通讯,甚至阅读他们阅读的东西。

Whatever You Do, You Might as Well Do It the Best You Can

Otherwise you may miss some important lessons to learn.

不管你做什么,最好能够竭尽全力地去做

否则,你可能会错过一些重要的经验教训。

Look for Patterns

Look for patterns in coding, solving problems, working with others, etc. The more patterns you can recorgnize and handle, the more complex problems you’ll be able to solve in the less amount of time

寻找模式

寻找编码、解决问题、与其他人协作的模式。你能识别和处理的模式越多,你在最少时间内可解决的复杂问题越多。

Maximize for Learning

Whenever I decide to take another job, nowdays I always look for opportunities where I can learn new skills and benefit my employer/client with skills I learnt previously.

最大限度地学习

每当我决定换一份工作的时候,我总会寻找那些能让我有机会学习新技能,同时我以前学到的技能让老板/客户受益的工作。

Practice

The really successful programmers spend time with programming outside their work hours. They contribute to open-source projects, do part-time freelancing, work on startup ideas, read books, answer questions on stack-overflow, write blog posts, etc. Always look for opportunities to improve your skills and get more experience.

实践

真正成功的程序员在他们工作时间之外,也会花时间在编程上。他们会致力于开源项目,兼职自由职业工作,工作于创业点子,读书,回答stack-overflow上的问题,写博客文章等。总是寻找机会提高自己的技能,获得更多的经验。

I don’t have much details about your current situation, but I hope you found at least one useful thought in my email.

对于你现在的情况,我无法做更详细地讨论,但我希望我的这封邮件能为你提供至少一个有用的思路。

Let me know your thoughts and I’d be happy to answer any questions you may have on programming / career.

非常乐意回答你任何有关编程/职业方面你可能碰到的问题。